1. Technical Field
The present disclosure relates generally to performance modeling of information technology (IT) systems, and more particularly, to performance modeling of transaction-based distributed software applications.
2. Discussion of Related Art
Performance modeling of computer networks can be an important tool in the capacity planning of computer networks. Performance models of complex software and hardware network architectures can aid in accurately predicting their performance for varying data traffic patterns and workloads.
Transaction-based software applications generate data traffic that includes request/response transaction pairs. Transactions may include requests for service by a computer system. These requests can include collections of sub-requests. For example, a purchase request can include visiting a particular webpage for a product, clicking the buy button, entering account information, clicking the submit button, etc. A transaction-based software application that is deployed over an arbitrary computer network architecture may be considered a transaction-based distributed software application. Each request and response associated with a transaction of the transaction-based distributed software application can be exchanged between different server entities of the computer network.
A performance model of the transaction-based distributed software application deployed over the computer network can be used to predict the performance of the application and take measures to improve it if possible. For example, the model may reveal that a server of the network has an unacceptably high response time in servicing requests of the application, suggesting that an upgrade of that server may improve the application's performance.
Performance models based on traditional queuing theory need certain model parameters to compute performance metrics. The model parameters include service times of different transaction classes and central processing unit (CPU) overheads of computers within a given network. The performance metrics may include average transactional response time, average number of transactions (or jobs) waiting to be processed in a buffer queue, etc. Other conventional techniques that make use of simulations and manual calibrations can also be used to compute these and other similar performance metrics from the model parameters. However, none of these techniques can be used practically if the service time parameters are not known in advance.
Another known conventional technique uses inferencing to generate a load-independent service time and CPU overhead based performance model of an arbitrary computer network architecture. Inferencing allows one to compute the service time parameters from readily available measurement data on end-to-end-response times, overall CPU utilizations, and workload arrival rates. However, this inferencing technique is not reliable unless the arriving transactional workload is stationary.
Real world network traffic and the transactional workload arriving at transaction-based software applications is non-stationary in nature when a window of time is considered. Further, state of the art transaction-based software applications are quite complex in design. Accordingly, end-to-end transactional requests and responses may incur variable service times that depend on the total arriving non-stationary workload.
Thus, there is a need for methods and systems that can accurately model system performance when the arriving transactional workload is non-stationary.